#include <iostream>
#include <memory>
#include <chrono>
#include <string>
#include <boost/make_shared.hpp>
#include <vector>

#include <pcl/point_cloud.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl_conversions/pcl_conversions.h>
#include <pcl/common/common.h>
#include <pcl/common/transforms.h>
#include <pcl/filters/voxel_grid.h>
#include <pcl/console/parse.h>
#include <pcl/common/transforms.h>
#include <pcl/keypoints/harris_3d.h>

class Process_Cloud
{
    public:
        Process_Cloud(){}
        ~Process_Cloud(){}
        pcl::PointCloud <pcl::PointXYZ> input_cloud;
        pcl::PointCloud <pcl::PointXYZ> output_cloud;
        pcl::PointCloud <pcl::PointXYZ>::Ptr  getinput_cloudptr(void);
        pcl::PointCloud <pcl::PointXYZ>::Ptr  getoutput_cloudptr(void);
        void add_input_point(pcl::PointXYZ p );
        void clear_input_point(void);
        void vgrid(double grid);
        void convert_cloud(float tick);
        void my_harris_3d(void);
        void swap(void);
};


